// 职责是请求http.js中的get或者post方法，获取到数据以后，做一次加工后再返回
import http from './http'
import { CURRENT_CITY } from './config.js'
import { Toast } from 'antd-mobile'
// 1.0 获取轮播图数据
export async function get_Swipe_Data() {
    let res = await http.get('/home/swiper', null);
    // 注意：在async方法中返回的任何类型的值都会包装成一个Promise对象返回，例如：return 1 ,也会包装成为return Promise.resolve(1)
    // 所以 res.data本质上返回的是一个promise对象，那么在外面就可以使用await进行调用，也可以直接.then() 来接收值
    return res.data;
}

// 2.0 获取租房小组数据
export async function get_Group_Data() {
    // 因为此接口的area参数虽然有，但是无用，所以在biz方法里边直接写死
    let res = await http.get('/home/groups', { area: 'AREA|88cff55c-aaa4-e2e0' });
    return res.data;
}

// 3.0 获取首页的新闻资讯
export async function get_News_Data() {
    let res = await http.get('/home/news', { area: 'AREA|88cff55c-aaa4-e23333' });
    return res.data;
}
// 4.0 根据城市名称获取到城市信息
export async function get_Area_Data(params = { name: '广州市' }) {
    let res = await http.get('/area/info', params)
    return res.data.body;
}

// 5.0 获取所有的城市数据
export async function get_City_Data() {
    let res = await http.get('/area/city', { level: 1 });
    return res.data;
}

// 6.0 封装一个获取当前城市的方法
export async function get_Current_City() {
    // 1.0 去本地存储获取城市数据
    let obj = JSON.parse(localStorage.getItem(CURRENT_CITY) || "{}")
    if (obj.label) {
        // {label:'广州',value:'dssfsdfxx'}
        return obj;
    }

    // 2.0 如果本地存储中没有城市数据则调用百度api获取当前城市,并写入到本地存储中
    var myCity = new window.BMap.LocalCity();
    myCity.get(async (res) => {
        // 2.0 获取城市名称
        let cityName = res.name;

        // 3.0 根据百度地图获取的城市名称调用后台接口获取到城市对象（{label:'城市名',value:'城市id'}）
        // 原因：1、因为我们的服务器接口只有北，上，广深，四个城市的数据，所以如果是这4个城市之外的城市名称则统一返回上海
        // 2、将来我们在做地图界面的时候，要根据城市的id才能请求服务器接口获取到当前城市的所有房源数据，所以此处我们统一进行服务器请求到城市对象
        let { label, value } = await get_Area_Data({ name: cityName })

        // 5.0 将当前获取到的城市数据保存到localStorage中，以备地图找房页面进行获取
        localStorage.setItem(CURRENT_CITY, JSON.stringify({ label, value }));
        return { label, value };
    })
}

// 7.0 获取热门城市数据
export async function get_Hot_City() {
    let res = await http.get('/area/hot', null);
    return res.data.body;
}

// 8.0 根据 城市、区、镇 的value值获取下一级的房源信息数据
export async function get_House_Data(params = { id: 'AREA|e4940177-c04c-383d' }) {
    Toast.loading('正在努力加载数据....', 0)  //提示用户正在加载中,第二个参数如果是0，则一定要调用Toast.hide()方法才能关闭提示面板
    let res = await http.get('/area/map', params);
    Toast.hide();  // 关闭正在加载中的提示
    return res.data;
}

// 9.0 根据小区id获取其房屋列表数据
export async function get_House_List(params = { cityId: '' }) {
    let res = await http.get('/houses', params);
    return res.data.body;
}

// 10.0 根据房屋id获取到该房屋的详细信息
export async function get_House_Info(params = { id: '' }) {
    let { id } = params;
    let res = await http.get('/houses/' + id, null);
    return res.data.body; // 房屋的对象
}